
//Copyright 1997-2009 Syrinx Development, Inc.
//This file is part of the Syrinx Web Application Framework (SWAF).
// == BEGIN LICENSE ==
//
// Licensed under the terms of any of the following licenses at your
// choice:
//
//  - GNU General Public License Version 3 or later (the "GPL")
//    http://www.gnu.org/licenses/gpl.html
//
//  - GNU Lesser General Public License Version 3 or later (the "LGPL")
//    http://www.gnu.org/licenses/lgpl.html
//
//  - Mozilla Public License Version 1.1 or later (the "MPL")
//    http://www.mozilla.org/MPL/MPL-1.1.html
//
// == END LICENSE ==
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace Swaf.Gui
{
	[Serializable]
	public class ParentBizProcInfo
	{
		public string DataId;
		public string ParentId;
		public string ParentSelectedBizObjFieldName;
		public string Meta;
		public bool CompleteParentDependency;
		public bool UseCache = true;
		protected object m_parentSelectedBizObjFieldValueCache;

		public ParentBizProcInfo(XmlElement el, string defaultDataId)
		{
			DataId = getS(el, "dataId", defaultDataId);
			ParentId = getS(el, "id", null);
			ParentSelectedBizObjFieldName = getS(el,"fieldName",null);
			Meta = getS(el, "meta", null);

			CompleteParentDependency = getBool(el, "fullDependency", false);
			UseCache = getBool(el, "cacheValue", true);
		}

		public ParentBizProcInfo(string dataId, string parentId, string fieldName, string meta, bool completeParentDependency, bool cacheValue)
		{
			DataId = dataId;
			ParentId = parentId;
			ParentSelectedBizObjFieldName = fieldName;
			Meta = meta;
			CompleteParentDependency = completeParentDependency;
			UseCache = cacheValue;
		}

		private string getS(XmlElement el, string name, string defVal)
		{
			return (!el.HasAttribute(name)) ? defVal : el.GetAttribute(name);
		}
		private bool getBool(XmlElement el, string name, bool defVal)
		{
			return (!el.HasAttribute(name)) ? defVal : bool.Parse(el.GetAttribute(name));
		}

		public void parentChanged()
		{
			ParentSelectedBizObjFieldValueCache = null;
		}

		public object ParentSelectedBizObjFieldValueCache
		{
			get
			{
				return UseCache ? m_parentSelectedBizObjFieldValueCache : null;
			}
			set
			{
				if (UseCache)
					m_parentSelectedBizObjFieldValueCache = value;
			}
		}
	}
}
